<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Turbo code</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Turbo_code"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.math.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Turbo_code rootpage-Turbo_code skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Turbo code</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p>
In <a href="Information_theory" title="Information theory">information theory</a>, <b>turbo codes</b> are a class of high-performance <a href="Forward_error_correction" class="mw-redirect" title="Forward error correction">forward error correction</a> (FEC) codes developed around 1990–91, but first published in 1993. They were the first practical codes to closely approach the maximum channel capacity or <a href="Shannon%E2%80%93Hartley_theorem" title="Shannon–Hartley theorem">Shannon limit</a>, a theoretical maximum for the <a href="Code_rate" title="Code rate">code rate</a> at which reliable communication is still possible given a specific noise level. Turbo codes are used in <a href="3G" title="3G">3G</a>/<a href="4G" title="4G">4G</a> mobile communications (e.g., in <a href="UMTS" title="UMTS">UMTS</a> and <a href="LTE_(telecommunication)" title="LTE (telecommunication)">LTE</a>) and in (<a href="Deep_Space_Network" class="mw-redirect" title="Deep Space Network">deep space</a>) <a href="Satellite" title="Satellite">satellite</a> <a href="Telecommunication" class="mw-redirect" title="Telecommunication">communications</a> as well as other applications where designers seek to achieve reliable information transfer over bandwidth- or latency-constrained communication links in the presence of data-corrupting noise. Turbo codes compete with <a href="Low-density_parity-check_code" title="Low-density parity-check code">low-density parity-check</a> (LDPC) codes, which provide similar performance. Until the patent for turbo codes expired,<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> the patent-free status of LDPC codes was an important factor in LDPC's continued relevance.<sup id="cite_ref-Closing_2-0" class="reference"><a href="#cite_note-Closing-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>The name "turbo code" arose from the feedback loop used during normal turbo code decoding, which was analogized to the exhaust feedback used for engine <a href="Turbocharging" class="mw-redirect" title="Turbocharging">turbocharging</a>. <a href="Joachim_Hagenauer" title="Joachim Hagenauer">Hagenauer</a> has argued the term turbo code is a misnomer since there is no feedback involved in the encoding process.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p>The fundamental patent application for turbo codes was filed on 23 April 1991. The patent application lists <a href="Claude_Berrou" title="Claude Berrou">Claude Berrou</a> as the sole inventor of turbo codes. The patent filing resulted in several patents including <a rel="nofollow" class="external text" href="https://patents.google.com/patent/US5446747">US Patent 5,446,747</a>, which expired 29 August 2013.
</p><p>The first public paper on turbo codes was "<i>Near Shannon Limit Error-correcting Coding and Decoding: Turbo-codes</i>".<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> This paper was published 1993 in the Proceedings of IEEE International Communications Conference. The 1993 paper was formed from three separate submissions that were combined due to space constraints. The merger caused the paper to list three authors: Berrou, <a href="Alain_Glavieux" title="Alain Glavieux">Glavieux</a>, and <a href="Punya_Thitimajshima" title="Punya Thitimajshima">Thitimajshima</a> (from Télécom Bretagne, former <a href="%C3%89cole_Nationale_Sup%C3%A9rieure_des_T%C3%A9l%C3%A9communications_de_Bretagne" class="mw-redirect" title="École Nationale Supérieure des Télécommunications de Bretagne">ENST Bretagne</a>, France). However, it is clear from the original patent filing that Berrou is the sole inventor of turbo codes and that the other authors of the paper contributed material other than the core concepts.
</p><p>Turbo codes were so revolutionary at the time of their introduction that many experts in the field of coding did not believe the reported results. When the performance was confirmed a small revolution in the world of coding took place that led to the investigation of many other types of iterative signal processing.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p><p>The first class of turbo code was the parallel concatenated convolutional code (PCCC). Since the introduction of the original parallel turbo codes in 1993, many other classes of turbo code have been discovered, including <a href="Serial_concatenated_convolutional_codes" title="Serial concatenated convolutional codes">serial concatenated convolutional codes</a> and <a href="Repeat-accumulate_code" title="Repeat-accumulate code">repeat-accumulate codes</a>. Iterative turbo decoding methods have also been applied to more conventional FEC systems, including Reed–Solomon corrected convolutional codes, although these systems are too complex for practical implementations of iterative decoders. Turbo equalization also flowed from the concept of turbo coding.
</p><p>In addition to turbo codes, Berrou also invented recursive systematic convolutional (RSC) codes, which are used in the example implementation of turbo codes described in the patent. Turbo codes that use RSC codes seem to perform better than turbo codes that do not use RSC codes.
</p><p>Prior to turbo codes, the best constructions were serial <a href="Concatenated_code" class="mw-redirect" title="Concatenated code">concatenated codes</a> based on an outer <a href="Reed%E2%80%93Solomon_error_correction" title="Reed–Solomon error correction">Reed–Solomon error correction</a> code combined with an inner <a href="Viterbi_algorithm" title="Viterbi algorithm">Viterbi-decoded</a> short constraint length <a href="Convolutional_code" title="Convolutional code">convolutional code</a>, also known as RSV codes.
</p><p>In a later paper, Berrou gave credit to the intuition of "G. Battail, <a href="Joachim_Hagenauer" title="Joachim Hagenauer">J. Hagenauer</a> and P. Hoeher, who, in the late 80s, highlighted the interest of probabilistic processing." He adds "<a href="Robert_G._Gallager" title="Robert G. Gallager">R. Gallager</a> and M. Tanner had already imagined coding and decoding techniques whose general principles are closely related," although the necessary calculations were impractical at that time.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="An_example_encoder">An example encoder</h2></div>
<p>There are many different instances of turbo codes, using different component encoders, input/output ratios, interleavers, and <a href="Punctured_code" title="Punctured code">puncturing patterns</a>. This example encoder implementation describes a classic turbo encoder, and demonstrates the general design of parallel turbo codes.
</p><p>This encoder implementation sends three sub-blocks of bits. The first sub-block is the <i>m</i>-bit block of payload data. The second sub-block is <i>n/2</i> parity bits for the payload data, computed using a recursive systematic <a href="Convolutional_code" title="Convolutional code">convolutional code</a> (RSC code). The third sub-block is <i>n/2</i> parity bits for a known <a href="Permutation" title="Permutation">permutation</a> of the payload data, again computed using an RSC code. Thus, two redundant but different sub-blocks of parity bits are sent with the payload. The complete block has <span class="nowrap"><i>m</i> + <i>n</i></span> bits of data with a code rate of <span class="nowrap"><i>m</i>/(<i>m</i> + <i>n</i>)</span>. The <a href="Permutation" title="Permutation">permutation</a> of the payload data is carried out by a device called an <a href="Interleaver" class="mw-redirect" title="Interleaver">interleaver</a>.
</p><p>Hardware-wise, this turbo code encoder consists of two identical RSC coders, <i>C</i><sub>1</sub> and <i>C</i><sub>2</sub>, as depicted in the figure, which are connected to each other using a concatenation scheme, called <i>parallel concatenation</i>:
</p><p><span class="mw-default-size" typeof="mw:File"></span>
</p><p>In the figure, <i>M</i> is a memory register. The delay line and interleaver force input bits d<sub>k</sub> to appear in different sequences.
At first iteration, the input sequence <i>d</i><sub>k</sub> appears at both outputs of the encoder, <i>x</i><sub>k</sub> and<i> y</i><sub>1k</sub> or <i>y</i><sub>2k</sub> due to the encoder's systematic nature. If the encoders <i>C</i><sub>1</sub> and <i>C</i><sub>2</sub> are used in <i>n</i><sub>1</sub> and <i>n</i><sub>2</sub> iterations, their rates are respectively equal to
</p>
<dl><dd><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{aligned}~R_{1}&={\frac {n_{1}+n_{2}}{2n_{1}+n_{2}}}\\~R_{2}&={\frac {n_{1}+n_{2}}{n_{1}+2n_{2}}}\end{aligned}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true">
<mtr>
<mtd>
<mtext> </mtext>
<msub>
<mi>R</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mtd>
<mtd>
<mi></mi>
<mo>=</mo>
<mrow class="MJX-TeXAtom-ORD">
<mfrac>
<mrow>
<msub>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mrow>
<mrow>
<mn>2</mn>
<msub>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mrow>
</mfrac>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mtext> </mtext>
<msub>
<mi>R</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mtd>
<mtd>
<mi></mi>
<mo>=</mo>
<mrow class="MJX-TeXAtom-ORD">
<mfrac>
<mrow>
<msub>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mrow>
<mrow>
<msub>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<mn>2</mn>
<msub>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mrow>
</mfrac>
</mrow>
</mtd>
</mtr>
</mtable>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{aligned}~R_{1}&={\frac {n_{1}+n_{2}}{2n_{1}+n_{2}}}\\~R_{2}&={\frac {n_{1}+n_{2}}{n_{1}+2n_{2}}}\end{aligned}}}</annotation>
</semantics>
</math></span><img src="./680e2e7093aae32e05561b8c31d88beb6170e7e7.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.838ex; width:16.986ex; height:10.843ex;" alt="{\displaystyle {\begin{aligned}~R_{1}&={\frac {n_{1}+n_{2}}{2n_{1}+n_{2}}}\\~R_{2}&={\frac {n_{1}+n_{2}}{n_{1}+2n_{2}}}\end{aligned}}}" loading="lazy"></span></dd></dl>
<div class="mw-heading mw-heading2"><h2 id="The_decoder">The decoder</h2></div>
<p>The decoder is built in a similar way to the above encoder. Two elementary decoders are interconnected to each other, but in series, not in parallel. The <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{1}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{1}}</annotation>
</semantics>
</math></span><img src="./46cdbd9834b91150f8200e76ed2f86ad72d5f83c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{1}}" loading="lazy"></span> decoder operates on lower speed (i.e., <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle R_{1}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>R</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle R_{1}}</annotation>
</semantics>
</math></span><img src="./553a82fb4b924069c8e2f74b60921f6fb3519e9a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.818ex; height:2.509ex;" alt="{\displaystyle \textstyle R_{1}}" loading="lazy"></span>), thus, it is intended for the <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle C_{1}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle C_{1}}</annotation>
</semantics>
</math></span><img src="./bded75f27fee94852eb0b9c251acc8ef7e102898.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.716ex; height:2.509ex;" alt="{\displaystyle \textstyle C_{1}}" loading="lazy"></span> encoder, and <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{2}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{2}}</annotation>
</semantics>
</math></span><img src="./ca883287bb9b05a8a08fea64baec1549d06a841d.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{2}}" loading="lazy"></span> is for <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle C_{2}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle C_{2}}</annotation>
</semantics>
</math></span><img src="./8dcd3e158edbd27331f3d5d555c692f860796ad6.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.716ex; height:2.509ex;" alt="{\displaystyle \textstyle C_{2}}" loading="lazy"></span> correspondingly. <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{1}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{1}}</annotation>
</semantics>
</math></span><img src="./46cdbd9834b91150f8200e76ed2f86ad72d5f83c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{1}}" loading="lazy"></span> yields a <a class="mw-selflink-fragment" href="#Soft_decision_approach">soft decision</a> which causes <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle L_{1}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle L_{1}}</annotation>
</semantics>
</math></span><img src="./66428d19f4dc468e6849510f8a4db1e3fc798c29.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.637ex; height:2.509ex;" alt="{\displaystyle \textstyle L_{1}}" loading="lazy"></span> delay. The same delay is caused by the delay line in the encoder. The <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{2}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{2}}</annotation>
</semantics>
</math></span><img src="./ca883287bb9b05a8a08fea64baec1549d06a841d.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{2}}" loading="lazy"></span>'s operation causes <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle L_{2}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle L_{2}}</annotation>
</semantics>
</math></span><img src="./8d554b7a7fb1b48737eb839dd26d3241f7421be7.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.637ex; height:2.509ex;" alt="{\displaystyle \textstyle L_{2}}" loading="lazy"></span> delay.
</p><p><span class="mw-default-size" typeof="mw:File"></span>
</p><p>An interleaver installed between the two decoders is used here to scatter error bursts coming from <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{1}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{1}}</annotation>
</semantics>
</math></span><img src="./46cdbd9834b91150f8200e76ed2f86ad72d5f83c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{1}}" loading="lazy"></span> output. <i>DI</i> block is a demultiplexing and insertion module. It works as a switch, redirecting input bits to <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{1}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{1}}</annotation>
</semantics>
</math></span><img src="./46cdbd9834b91150f8200e76ed2f86ad72d5f83c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{1}}" loading="lazy"></span> at one moment and to <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{2}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{2}}</annotation>
</semantics>
</math></span><img src="./ca883287bb9b05a8a08fea64baec1549d06a841d.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{2}}" loading="lazy"></span> at another. In OFF state, it feeds both <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle y_{1k}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>y</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
<mi>k</mi>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle y_{1k}}</annotation>
</semantics>
</math></span><img src="./f8c6fd52d22661f7efa538482ece9340f64439d1.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:3.05ex; height:2.009ex;" alt="{\displaystyle \textstyle y_{1k}}" loading="lazy"></span> and <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle y_{2k}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>y</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
<mi>k</mi>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle y_{2k}}</annotation>
</semantics>
</math></span><img src="./795f256ea5b4ff460d289fbe2d2b0589f959aa6a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:3.05ex; height:2.009ex;" alt="{\displaystyle \textstyle y_{2k}}" loading="lazy"></span> inputs with padding bits (zeros).
</p><p>Consider a memoryless <a href="Additive_white_Gaussian_noise" title="Additive white Gaussian noise">AWGN</a> channel, and assume that at <i>k</i>-th iteration, the decoder receives a pair of random variables:
</p>
<dl><dd><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{aligned}~x_{k}&=(2d_{k}-1)+a_{k}\\~y_{k}&=2(Y_{k}-1)+b_{k}\end{aligned}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true">
<mtr>
<mtd>
<mtext> </mtext>
<msub>
<mi>x</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
</mtd>
<mtd>
<mi></mi>
<mo>=</mo>
<mo stretchy="false">(</mo>
<mn>2</mn>
<msub>
<mi>d</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<msub>
<mi>a</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<mtext> </mtext>
<msub>
<mi>y</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
</mtd>
<mtd>
<mi></mi>
<mo>=</mo>
<mn>2</mn>
<mo stretchy="false">(</mo>
<msub>
<mi>Y</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<msub>
<mi>b</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
</mtd>
</mtr>
</mtable>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{aligned}~x_{k}&=(2d_{k}-1)+a_{k}\\~y_{k}&=2(Y_{k}-1)+b_{k}\end{aligned}}}</annotation>
</semantics>
</math></span><img src="./3b961b18b360fcc96b7698df6dfe404eb478aa3f.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.505ex; width:21.28ex; height:6.176ex;" alt="{\displaystyle {\begin{aligned}~x_{k}&=(2d_{k}-1)+a_{k}\\~y_{k}&=2(Y_{k}-1)+b_{k}\end{aligned}}}" loading="lazy"></span></dd></dl>
<p>where <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle a_{k}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>a</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle a_{k}}</annotation>
</semantics>
</math></span><img src="./c13d14647897dbeed2455100fa80225ff037bb6e.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.319ex; height:2.009ex;" alt="{\displaystyle \textstyle a_{k}}" loading="lazy"></span> and <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle b_{k}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>b</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle b_{k}}</annotation>
</semantics>
</math></span><img src="./6ab2f532421c9a9c23bfea6c1c79666767536682.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.086ex; height:2.509ex;" alt="{\displaystyle \textstyle b_{k}}" loading="lazy"></span> are independent noise components having the same variance <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle \sigma ^{2}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msup>
<mi>σ<!-- σ --></mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msup>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle \sigma ^{2}}</annotation>
</semantics>
</math></span><img src="./c52c29d2277b7ea61fe5b161ac93bc10b904b0cd.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.385ex; height:2.509ex;" alt="{\displaystyle \textstyle \sigma ^{2}}" loading="lazy"></span>. <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle Y_{k}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>Y</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle Y_{k}}</annotation>
</semantics>
</math></span><img src="./f24be713c58617f0b4207e41285fbec676795069.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.439ex; height:2.509ex;" alt="{\displaystyle \textstyle Y_{k}}" loading="lazy"></span> is a <i>k</i>-th bit from <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle y_{k}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>y</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle y_{k}}</annotation>
</semantics>
</math></span><img src="./0073f51403edf6af1d062b8ea7b081a0429c49b7.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.228ex; height:2.009ex;" alt="{\displaystyle \textstyle y_{k}}" loading="lazy"></span> encoder output.
</p><p>Redundant information is demultiplexed and sent through <i>DI</i> to <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{1}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{1}}</annotation>
</semantics>
</math></span><img src="./46cdbd9834b91150f8200e76ed2f86ad72d5f83c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{1}}" loading="lazy"></span> (when <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle y_{k}=y_{1k}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>y</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>y</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
<mi>k</mi>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle y_{k}=y_{1k}}</annotation>
</semantics>
</math></span><img src="./1b188a4424533747614e59f650c1cd7ccf8a71d5.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:8.376ex; height:2.009ex;" alt="{\displaystyle \textstyle y_{k}=y_{1k}}" loading="lazy"></span>) and to <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{2}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{2}}</annotation>
</semantics>
</math></span><img src="./ca883287bb9b05a8a08fea64baec1549d06a841d.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{2}}" loading="lazy"></span> (when <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle y_{k}=y_{2k}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>y</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>y</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
<mi>k</mi>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle y_{k}=y_{2k}}</annotation>
</semantics>
</math></span><img src="./d78f4d4aacd7051a78020e6096da433d00f15001.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:8.376ex; height:2.009ex;" alt="{\displaystyle \textstyle y_{k}=y_{2k}}" loading="lazy"></span>).
</p><p><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{1}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{1}}</annotation>
</semantics>
</math></span><img src="./46cdbd9834b91150f8200e76ed2f86ad72d5f83c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{1}}" loading="lazy"></span> yields a soft decision; i.e.:
</p>
<dl><dd><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Lambda (d_{k})=\log {\frac {p(d_{k}=1)}{p(d_{k}=0)}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi mathvariant="normal">Λ<!-- Λ --></mi>
<mo stretchy="false">(</mo>
<msub>
<mi>d</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mi>log</mi>
<mo><!-- --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mfrac>
<mrow>
<mi>p</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>d</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>=</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mi>p</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>d</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>=</mo>
<mn>0</mn>
<mo stretchy="false">)</mo>
</mrow>
</mfrac>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \Lambda (d_{k})=\log {\frac {p(d_{k}=1)}{p(d_{k}=0)}}}</annotation>
</semantics>
</math></span><img src="./11617055f8650dbd772ac2d3a631d271db51aa28.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.671ex; width:22.551ex; height:6.509ex;" alt="{\displaystyle \Lambda (d_{k})=\log {\frac {p(d_{k}=1)}{p(d_{k}=0)}}}" loading="lazy"></span></dd></dl>
<p>and delivers it to <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{2}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{2}}</annotation>
</semantics>
</math></span><img src="./ca883287bb9b05a8a08fea64baec1549d06a841d.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{2}}" loading="lazy"></span>. <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle \Lambda (d_{k})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi mathvariant="normal">Λ<!-- Λ --></mi>
<mo stretchy="false">(</mo>
<msub>
<mi>d</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle \Lambda (d_{k})}</annotation>
</semantics>
</math></span><img src="./6336a07253fdf57e0e7d0b3978abcbcd1bf858fa.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:5.72ex; height:2.843ex;" alt="{\displaystyle \textstyle \Lambda (d_{k})}" loading="lazy"></span> is called the <i>logarithm of the likelihood ratio</i> (LLR). <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle p(d_{k}=i),\,i\in \{0,1\}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>p</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>d</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>=</mo>
<mi>i</mi>
<mo stretchy="false">)</mo>
<mo>,</mo>
<mspace width="thinmathspace"></mspace>
<mi>i</mi>
<mo>∈<!-- ∈ --></mo>
<mo fence="false" stretchy="false">{</mo>
<mn>0</mn>
<mo>,</mo>
<mn>1</mn>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle p(d_{k}=i),\,i\in \{0,1\}}</annotation>
</semantics>
</math></span><img src="./a1e8beda18530cd2171869599444519faef12e8d.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; margin-left: -0.089ex; width:20.015ex; height:2.843ex;" alt="{\displaystyle \textstyle p(d_{k}=i),\,i\in \{0,1\}}" loading="lazy"></span> is the <i>a posteriori probability</i> (APP) of the <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle d_{k}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>d</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle d_{k}}</annotation>
</semantics>
</math></span><img src="./010e9a61264867562f12322336483bc4917e8abd.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.298ex; height:2.509ex;" alt="{\displaystyle \textstyle d_{k}}" loading="lazy"></span> data bit which shows the probability of interpreting a received <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle d_{k}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<msub>
<mi>d</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle d_{k}}</annotation>
</semantics>
</math></span><img src="./010e9a61264867562f12322336483bc4917e8abd.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.298ex; height:2.509ex;" alt="{\displaystyle \textstyle d_{k}}" loading="lazy"></span> bit as <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle i}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>i</mi>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle i}</annotation>
</semantics>
</math></span><img src="./b69dce609a74290821dcbd7db868b1af9c061fd4.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:0.802ex; height:2.176ex;" alt="{\displaystyle \textstyle i}" loading="lazy"></span>. Taking the <i>LLR</i> into account, <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{2}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{2}}</annotation>
</semantics>
</math></span><img src="./ca883287bb9b05a8a08fea64baec1549d06a841d.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{2}}" loading="lazy"></span> yields a hard decision; i.e., a decoded bit.
</p><p>It is known that the <a href="Viterbi_algorithm" title="Viterbi algorithm">Viterbi algorithm</a> is unable to calculate APP, thus it cannot be used in <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{1}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{1}}</annotation>
</semantics>
</math></span><img src="./46cdbd9834b91150f8200e76ed2f86ad72d5f83c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{1}}" loading="lazy"></span>. Instead of that, a modified <a href="BCJR_algorithm" title="BCJR algorithm">BCJR algorithm</a> is used. For <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{2}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{2}}</annotation>
</semantics>
</math></span><img src="./ca883287bb9b05a8a08fea64baec1549d06a841d.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{2}}" loading="lazy"></span>, the <a href="Viterbi_algorithm" title="Viterbi algorithm">Viterbi algorithm</a> is an appropriate one.
</p><p>However, the depicted structure is not an optimal one, because <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \textstyle DEC_{1}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="false" scriptlevel="0">
<mi>D</mi>
<mi>E</mi>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \textstyle DEC_{1}}</annotation>
</semantics>
</math></span><img src="./46cdbd9834b91150f8200e76ed2f86ad72d5f83c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.416ex; height:2.509ex;" alt="{\displaystyle \textstyle DEC_{1}}" loading="lazy"></span> uses only a proper fraction of the available redundant information. In order to improve the structure, a feedback loop is used (see the dotted line on the figure).
</p>
<div class="mw-heading mw-heading2"><h2 id="Soft_decision_approach">Soft decision approach</h2></div>
<p>The decoder front-end produces an integer for each bit in the data stream. This integer is a measure of how likely it is that the bit is a 0 or 1 and is also called <i>soft bit</i>. The integer could be drawn from the range [−127, 127], where:
</p>
<ul><li>−127 means "certainly 0"</li>
<li>−100 means "very likely 0"</li>
<li>0 means "it could be either 0 or 1"</li>
<li>100 means "very likely 1"</li>
<li>127 means "certainly 1"</li></ul>
<p>This introduces a probabilistic aspect to the data-stream from the front end, but it conveys more information about each bit than just 0 or 1.
</p><p>For example, for each bit, the front end of a traditional wireless-receiver has to decide if an internal analog voltage is above or below a given threshold voltage level. For a turbo code decoder, the front end would provide an integer measure of how far the internal voltage is from the given threshold.
</p><p>To decode the <span class="nowrap"><i>m</i> + <i>n</i></span>-bit block of data, the decoder front-end creates a block of likelihood measures, with one likelihood measure for each bit in the data stream. There are two parallel decoders, one for each of the <style data-mw-deduplicate="TemplateStyles:r1154941027">
/* start https://en.wikipedia.org/ */
.mw-parser-output .frac{white-space:nowrap}.mw-parser-output .frac .num,.mw-parser-output .frac .den{font-size:80%;line-height:0;vertical-align:super}.mw-parser-output .frac .den{vertical-align:sub}.mw-parser-output .sr-only{border:0;clip:rect(0,0,0,0);clip-path:polygon(0px 0px,0px 0px,0px 0px);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}
/* end https://en.wikipedia.org/ */
</style><span class="frac"><span class="num"><i>n</i></span>⁄<span class="den">2</span></span>-bit parity sub-blocks. Both decoders use the sub-block of <i>m</i> likelihoods for the payload data. The decoder working on the second parity sub-block knows the permutation that the coder used for this sub-block.
</p>
<div class="mw-heading mw-heading2"><h2 id="Solving_hypotheses_to_find_bits">Solving hypotheses to find bits</h2></div>
<p>The key innovation of turbo codes is how they use the likelihood data to reconcile differences between the two decoders. Each of the two convolutional decoders generates a hypothesis (with derived likelihoods) for the pattern of <i>m</i> bits in the payload sub-block. The hypothesis bit-patterns are compared, and if they differ, the decoders exchange the derived likelihoods they have for each bit in the hypotheses. Each decoder incorporates the derived likelihood estimates from the other decoder to generate a new hypothesis for the bits in the payload. Then they compare these new hypotheses. This iterative process continues until the two decoders come up with the same hypothesis for the <i>m</i>-bit pattern of the payload, typically in 15 to 18 cycles.
</p><p>An analogy can be drawn between this process and that of solving cross-reference puzzles like <a href="Crossword" title="Crossword">crossword</a> or <a href="Sudoku" title="Sudoku">sudoku</a>. Consider a partially completed, possibly garbled crossword puzzle. Two puzzle solvers (decoders) are trying to solve it: one possessing only the "down" clues (parity bits), and the other possessing only the "across" clues. To start, both solvers guess the answers (hypotheses) to their own clues, noting down how confident they are in each letter (payload bit). Then, they compare notes, by exchanging answers and confidence ratings with each other, noticing where and how they differ. Based on this new knowledge, they both come up with updated answers and confidence ratings, repeating the whole process until they converge to the same solution.
</p>
<div class="mw-heading mw-heading2"><h2 id="Performance">Performance</h2></div>
<p>Turbo codes perform well due to the attractive combination of the code's random appearance on the channel together with the physically realisable decoding structure. Turbo codes are affected by an <a href="Error_floor" title="Error floor">error floor</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Practical_applications_using_turbo_codes">Practical applications using turbo codes</h2></div>
<p>Telecommunications:
</p>
<ul><li>Turbo codes are used extensively in <a href="3G" title="3G">3G</a> and <a href="4G" title="4G">4G</a> mobile telephony standards; e.g., in <a href="High_Speed_Packet_Access" title="High Speed Packet Access">HSPA</a>, <a href="EV-DO" class="mw-redirect" title="EV-DO">EV-DO</a> and <a href="3GPP_Long_Term_Evolution" class="mw-redirect" title="3GPP Long Term Evolution">LTE</a>.</li>
<li><a href="MediaFLO" title="MediaFLO">MediaFLO</a>, terrestrial mobile television system from <a href="Qualcomm" title="Qualcomm">Qualcomm</a>.</li>
<li>The <a href="Return_link" class="mw-redirect" title="Return link">interaction channel</a> of <a href="Satellite_communication" class="mw-redirect" title="Satellite communication">satellite communication</a> systems, such as <a href="DVB-RCS" title="DVB-RCS">DVB-RCS</a><sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> and <a rel="nofollow" class="external text" href="http://www.dvb.org/standards/dvb-rcs2">DVB-RCS2</a>.</li>
<li>Recent <a href="NASA" title="NASA">NASA</a> missions such as <a href="Mars_Reconnaissance_Orbiter" title="Mars Reconnaissance Orbiter">Mars Reconnaissance Orbiter</a> use turbo codes as an alternative to <a href="Reed%E2%80%93Solomon_error_correction" title="Reed–Solomon error correction">Reed–Solomon error correction</a>-<a href="Viterbi_decoder" title="Viterbi decoder">Viterbi decoder</a> codes.</li>
<li><a href="IEEE_802.16" title="IEEE 802.16">IEEE 802.16</a> (<a href="WiMAX" title="WiMAX">WiMAX</a>), a wireless metropolitan network standard, uses block turbo coding and convolutional turbo coding.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Bayesian_formulation">Bayesian formulation</h2></div>
<p>From an <a href="Artificial_intelligence" title="Artificial intelligence">artificial intelligence</a> viewpoint, turbo codes can be considered as an instance of loopy <a href="Belief_propagation" title="Belief propagation">belief propagation</a> in <a href="Bayesian_network" title="Bayesian network">Bayesian networks</a>.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="BCJR_algorithm" title="BCJR algorithm">BCJR algorithm</a></li>
<li><a href="Convolutional_code" title="Convolutional code">Convolutional code</a></li>
<li><a href="Forward_error_correction" class="mw-redirect" title="Forward error correction">Forward error correction</a></li>
<li><a href="Interleaver" class="mw-redirect" title="Interleaver">Interleaver</a></li>
<li><a href="Low-density_parity-check_code" title="Low-density parity-check code">Low-density parity-check code</a></li>
<li><a href="Serial_concatenated_convolutional_codes" title="Serial concatenated convolutional codes">Serial concatenated convolutional codes</a></li>
<li><a href="Soft-decision_decoding" class="mw-redirect" title="Soft-decision decoding">Soft-decision decoding</a></li>
<li><a href="Turbo_equalizer" title="Turbo equalizer">Turbo equalizer</a></li>
<li><a href="Viterbi_algorithm" title="Viterbi algorithm">Viterbi algorithm</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1041539562">
/* start https://en.wikipedia.org/ */
.mw-parser-output .citation{word-wrap:break-word}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}
/* end https://en.wikipedia.org/ */
</style><span class="citation patent"><a rel="nofollow" class="external text" href="https://www.google.com/patents/US5446747">US 5446747</a></span><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Apatent&rft.number=5446747&rft.cc=US&rft.title="><span style="display: none;"> </span></span></span>
</li>
<li id="cite_note-Closing-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-Closing_2-0">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFErico_Guizzo2004" class="citation journal cs1">Erico Guizzo (1 March 2004). <a rel="nofollow" class="external text" href="https://archive.today/20230423205925/https://spectrum.ieee.org/closing-in-on-the-perfect-code">"CLOSING IN ON THE PERFECT CODE"</a>. <i>IEEE Spectrum</i>. Archived from <a rel="nofollow" class="external text" href="https://spectrum.ieee.org/closing-in-on-the-perfect-code">the original</a> on 23 April 2023.</cite> "Another advantage, perhaps the biggest of all, is that the LDPC patents have expired, so companies can use them without having to pay for intellectual-property rights."</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite id="CITEREFHagenauerOfferPapke1996" class="citation journal cs1">Hagenauer, Joachim; Offer, Elke; Papke, Luiz (March 1996). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20130611235418/http://www.ima.umn.edu/csg/bib/bib16.0429hage.pdf">"Iterative Decoding of Binary Block and Convolutional Codes"</a> <span class="cs1-format">(PDF)</span>. <i>IEEE Transactions on Information Theory</i>. <b>42</b> (2): <span class="nowrap">429–</span>445. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2F18.485714">10.1109/18.485714</a>. Archived from <a rel="nofollow" class="external text" href="http://www.ima.umn.edu/csg/bib/bib16.0429hage.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 11 June 2013<span class="reference-accessdate">. Retrieved <span class="nowrap">20 March</span> 2014</span>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFBerrouGlavieuxThitimajshima1993" class="citation cs2"><a href="Claude_Berrou" title="Claude Berrou">Berrou, Claude</a>; <a href="Alain_Glavieux" title="Alain Glavieux">Glavieux, Alain</a>; <a href="Punya_Thitimajshima" title="Punya Thitimajshima">Thitimajshima, Punya</a> (1993), <a rel="nofollow" class="external text" href="https://www.researchgate.net/publication/3604275">"Near Shannon Limit Error – Correcting"</a>, <i>Proceedings of IEEE International Communications Conference</i>, vol. 2, pp. <span class="nowrap">1064–</span>70, <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FICC.1993.397441">10.1109/ICC.1993.397441</a>, <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:17770377">17770377</a><span class="reference-accessdate">, retrieved <span class="nowrap">11 February</span> 2010</span></cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite id="CITEREFErico_Guizzo2004" class="citation journal cs1">Erico Guizzo (1 March 2004). <a rel="nofollow" class="external text" href="https://archive.today/20230423205925/https://spectrum.ieee.org/closing-in-on-the-perfect-code">"CLOSING IN ON THE PERFECT CODE"</a>. <i>IEEE Spectrum</i>. Archived from <a rel="nofollow" class="external text" href="https://spectrum.ieee.org/closing-in-on-the-perfect-code">the original</a> on 23 April 2023.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite id="CITEREFBerrou" class="citation cs2">Berrou, Claude, <a rel="nofollow" class="external text" href="https://www.researchgate.net/publication/3199004"><i>The ten-year-old turbo codes are entering into service</i></a>, Bretagne, France<span class="reference-accessdate">, retrieved <span class="nowrap">11 February</span> 2010</span></cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.etsi.org/deliver/etsi_en/301700_301799/301790/01.05.01_60/en_301790v010501p.pdf">Digital Video Broadcasting (DVB); Interaction channel for Satellite Distribution Systems</a>, ETSI EN 301 790, V1.5.1, May 2009.</span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite id="CITEREFMcElieceMacKayCheng1998" class="citation cs2"><a href="Robert_McEliece" title="Robert McEliece">McEliece, Robert J.</a>; <a href="David_J._C._MacKay" title="David J. C. MacKay">MacKay, David J. C.</a>; Cheng, Jung-Fu (1998), <a rel="nofollow" class="external text" href="https://authors.library.caltech.edu/6938/1/MCEieeejstc98.pdf">"Turbo decoding as an instance of Pearl's "belief propagation" algorithm"</a> <span class="cs1-format">(PDF)</span>, <i>IEEE Journal on Selected Areas in Communications</i>, <b>16</b> (2): <span class="nowrap">140–</span>152, <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2F49.661103">10.1109/49.661103</a>, <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0733-8716">0733-8716</a>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Publications">Publications</h3></div>
<ul><li><cite id="CITEREFBattail1998" class="citation journal cs1">Battail, Gérard (1998). "A conceptual framework for understanding turbo codes". <i>IEEE Journal on Selected Areas in Communications</i>. <b>916</b> (2): <span class="nowrap">245–</span>254. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2F49.661112">10.1109/49.661112</a>.</cite></li>
<li><cite id="CITEREFBrejzaLiMaunderAl-Hashimi2016" class="citation journal cs1">Brejza, M.F.; Li, L.; Maunder, R.G.; Al-Hashimi, B.M.; Berrou, C.; Hanzo, L. (2016). <a rel="nofollow" class="external text" href="https://eprints.soton.ac.uk/378161/1/tutorial.pdf">"20 years of turbo coding and energy-aware design guidelines for energy-constrained wireless applications"</a> <span class="cs1-format">(PDF)</span>. <i>IEEE Communications Surveys & Tutorials</i>. <b>918</b> (1): <span class="nowrap">8–</span>28. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FCOMST.2015.2448692">10.1109/COMST.2015.2448692</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:12966388">12966388</a>.</cite></li>
<li><cite id="CITEREFGarzón-BohórquezNourDouillard2016" class="citation conference cs1">Garzón-Bohórquez, Ronald; Nour, Charbel Abdel; Douillard, Catherine (2016). <a rel="nofollow" class="external text" href="https://hal.science/hal-01421989/file/Final%20Manuscript.pdf"><i>Improving Turbo codes for 5G with parity puncture-constrained interleavers</i></a> <span class="cs1-format">(PDF)</span>. 9th International Symposium on Turbo Codes and Iterative Information Processing (ISTC). pp. <span class="nowrap">151–</span>5. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FISTC.2016.7593095">10.1109/ISTC.2016.7593095</a>.</cite></li></ul>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><cite id="CITEREFGuizzo2004" class="citation journal cs1">Guizzo, Erico (March 2004). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20091011113149/http://www.spectrum.ieee.org/computing/software/closing-in-on-the-perfect-code">"Closing In On The Perfect Code"</a>. <i>IEEE Spectrum</i>. <b>41</b> (3): <span class="nowrap">36–</span>42. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FMSPEC.2004.1270546">10.1109/MSPEC.2004.1270546</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:21237188">21237188</a>. Archived from <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://spectrum.ieee.org/computing/software/closing-in-on-the-perfect-code">the original</a></span> on 11 October 2009.</cite></li>
<li><a rel="nofollow" class="external text" href="http://www.csee.wvu.edu/~mvalenti/documents/valenti01.pdf">"The UMTS Turbo Code and an Efficient Decoder Implementation Suitable for Software-Defined Radios"</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20161020193559/http://www.csee.wvu.edu/~mvalenti/documents/valenti01.pdf">Archived</a> 20 October 2016 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a> (<i>International Journal of Wireless Information Networks</i>)</li>
<li><cite id="CITEREFMackenzie2005" class="citation journal cs1">Mackenzie, Dana (2005). <a rel="nofollow" class="external text" href="https://www.newscientist.com/article.ns?id=mg18725071.400">"Take it to the limit"</a>. <i>New Scientist</i>. <b>187</b> (2507): <span class="nowrap">38–</span>41.</cite></li>
<li><a rel="nofollow" class="external text" href="https://www.sciencenews.org/article/pushing-limit">"Pushing the Limit"</a>, a <i><a href="Science_News" title="Science News">Science News</a></i> feature about the development and genesis of turbo codes</li>
<li><a rel="nofollow" class="external text" href="http://www-turbo.enst-bretagne.fr/">International Symposium On Turbo Codes</a></li>
<li><a rel="nofollow" class="external text" href="http://www.iterativesolutions.com/Matlab.htm">Coded Modulation Library</a>, an open source library for simulating turbo codes in matlab</li>
<li><a rel="nofollow" class="external text" href="http://www.ifp.uiuc.edu/~singer/journalpapers/tuchler_2002a.pdf">"Turbo Equalization: Principles and New Results"</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090227062216/http://www.ifp.uiuc.edu/~singer/journalpapers/tuchler_2002a.pdf">Archived</a> 27 February 2009 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a>, an <i><a href="IEEE_Transactions_on_Communications" title="IEEE Transactions on Communications">IEEE Transactions on Communications</a></i> article about using convolutional codes jointly with channel equalization.</li>
<li><a rel="nofollow" class="external text" href="http://itpp.sourceforge.net">IT++ Home Page</a> The <a href="IT%2B%2B" title="IT++">IT++</a> is a powerful C++ library which in particular supports turbo codes</li>
<li><a rel="nofollow" class="external text" href="http://www.inference.phy.cam.ac.uk/mackay/CodesTurbo.html">Turbo codes publications by David MacKay</a></li>
<li><a rel="nofollow" class="external text" href="https://aff3ct.github.io">AFF3CT Home Page</a> (A Fast Forward Error Correction Toolbox) for high speed turbo codes simulations in software</li>
<li><cite id="CITEREFKerouédanBerrou2010" class="citation journal cs1">Kerouédan, Sylvie; <a href="Claude_Berrou" title="Claude Berrou">Berrou, Claude</a> (2010). <a rel="nofollow" class="external text" href="https://doi.org/10.4249%2Fscholarpedia.6496">"Turbo code"</a>. <i>Scholarpedia</i>. <b>5</b> (4). scholarpedia.org: 6496. <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/2010SchpJ...5.6496K">2010SchpJ...5.6496K</a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.4249%2Fscholarpedia.6496">10.4249/scholarpedia.6496</a></span>.</cite></li>
<li><a rel="nofollow" class="external text" href="https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/an/an505.pdf">3GPP LTE Turbo Reference Design</a>.</li>
<li><a rel="nofollow" class="external text" href="https://www.mathworks.com/help/comm/ug/estimate-turbo-code-ber-performance-in-awgn.html">Estimate Turbo Code BER Performance in AWGN</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190201172029/https://www.mathworks.com/help/comm/ug/estimate-turbo-code-ber-performance-in-awgn.html">Archived</a> 1 February 2019 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a> (MatLab).</li>
<li><a rel="nofollow" class="external text" href="https://www.mathworks.com/help/comm/examples/parallel-concatenated-convolutional-coding-turbo-codes.html">Parallel Concatenated Convolutional Coding: Turbo Codes (MatLab Simulink)</a></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Consultative_Committee_for_Space_Data_Systems222" style="padding:3px"><table class="nowraplinks mw-collapsible mw-collapsed navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="Consultative_Committee_for_Space_Data_Systems222" style="font-size:114%;margin:0 4em"><a href="Consultative_Committee_for_Space_Data_Systems" title="Consultative Committee for Space Data Systems">Consultative Committee for Space Data Systems</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Data compression</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li>Images
<ul><li><a href="ICER_(file_format)" title="ICER (file format)">ICER</a></li>
<li><a href="JPEG" title="JPEG">JPEG</a></li>
<li><a href="JPEG_2000" title="JPEG 2000">JPEG 2000</a></li>
<li><a href="CCSDS_122.0-B-1" title="CCSDS 122.0-B-1">122.0.B1</a></li></ul></li>
<li>Data
<ul><li><a href="Adaptive_coding" title="Adaptive coding">Adaptive Entropy Coder</a></li></ul></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Error Correction</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<dl><dt>Current</dt>
<dd><a href="Binary_Golay_code" title="Binary Golay code">Binary Golay code</a></dd>
<dd><a href="Concatenated_error_correction_code" title="Concatenated error correction code">Concatenated codes</a></dd>
<dd></dd>
<dt>Proposed</dt>
<dd><a href="Low-density_parity-check_code" title="Low-density parity-check code">LDPC codes</a></dd></dl>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Telemetry command uplink</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Command-loss_timer" title="Command-loss timer">Command-loss timer</a></li>
<li><a href="Proximity-1_Space_Link_Protocol" title="Proximity-1 Space Link Protocol">Proximity-1 Space Link Protocol</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Telemetry downlink</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Spacecraft_Monitoring_%26_Control" class="mw-redirect" title="Spacecraft Monitoring & Control">Spacecraft Monitoring & Control</a></li>
<li><a href="Beacon_mode_service" title="Beacon mode service">Beacon mode service</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Telemetry general</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Space_Communications_Protocol_Specifications" title="Space Communications Protocol Specifications">Space Communications Protocol Specifications</a> (SCPS): <a href="Performance_Enhancing_Proxy" class="mw-redirect" title="Performance Enhancing Proxy">Performance Enhancing Proxy</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Telemetry modulation systems</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<dl><dt>Current</dt>
<dd><a href="Phase-shift_keying#Binary_phase-shift_keying_(BPSK)" title="Phase-shift keying">BPSK</a></dd>
<dd><a href="QPSK" class="mw-redirect" title="QPSK">QPSK</a></dd>
<dd><a href="OQPSK" class="mw-redirect" title="OQPSK">OQPSK</a></dd>
<dt>Proposed</dt>
<dd><a href="GMSK" class="mw-redirect" title="GMSK">GMSK</a></dd></dl>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Frequencies</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="X_band" title="X band">X band</a></li>
<li><a href="S_band" title="S band">S band</a></li>
<li><a href="Ku_band" title="Ku band">K<sub>u</sub> band</a></li>
<li><a href="K_band_(IEEE)" title="K band (IEEE)">K band</a></li>
<li><a href="Ka_band" title="Ka band">K<sub>a</sub> band</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Networking, interoperability and monitoring</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Service-oriented_architecture" title="Service-oriented architecture">Service-oriented architecture</a> (<a href="Message_Abstraction_Layer" title="Message Abstraction Layer">Message Abstraction Layer</a>)</li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox authority-control" aria-label="Navbox508" style="padding:3px"><table class="nowraplinks hlist navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Authority control databases: National </th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://id.loc.gov/authorities/sh2018000452">United States</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://www.nli.org.il/en/authorities/987012575029405171">Israel</a></span></li></ul></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-05-25" href="https://en.wikipedia.org/wiki/?title=Turbo_code&oldid=1292214221">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>